home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / texte / 7up_pd / resource.c < prev    next >
C/C++ Source or Header  |  1998-10-29  |  29KB  |  974 lines

  1. /* Resourcen kompilieren */
  2. /*****************************************************************************
  3. *
  4. *                                              7UP
  5. *                                      Modul: RESOURCE.C
  6. *                                     (c) by TheoSoft '90
  7. *
  8. *****************************************************************************/
  9. #include <portab.h>
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <string.h>
  13. #include <aes.h>
  14. #include <vdi.h>
  15.  
  16. #if GEMDOS
  17. #include <tos.h>
  18. #include <ext.h>
  19. #else
  20. #include <alloc.h>
  21. #endif
  22.  
  23. #include "windows.h"
  24. #include "forms.h"
  25. #include "7UP.h"
  26. #include "macro.h"
  27.  
  28. #include "undo.h"
  29.  
  30. #include "language.h"
  31.  
  32. #define SCREEN            1
  33. #define PLOTTER         11
  34. #define PRINTER         21
  35. #define METAFILE        31
  36. #define CAMERA          41
  37. #define TABLET          51
  38.  
  39. #define DFONT      0x0080                 /* extended obtype für font */
  40. #define DALT        0x0081
  41.  
  42. #define FLAGS15 0x8000
  43.  
  44. #define CRLF 1
  45. #define LF    2
  46. #define CR    3
  47.  
  48. OBJECT *winmenu,*prtmenu,*popmenu,
  49.          *desktop,*findmenu,*gotomenu,
  50.          *fontmenu,*tabmenu,*infomenu,
  51.          *copyinfo,*shellmenu,*chartable,
  52.          /**progress,*/*shareware,*userimg,
  53.          *shell2,*fkeymenu,*umbrmenu,
  54.          *pinstall,*preview,*layout,
  55.          *replmenu,*markmenu,
  56.          *popmenu,*divmenu,*bracemenu,
  57.          *sortmenu,*gdospop,*fselbox,
  58.          *paperpop,*grepmenu,*distpop,
  59.          *nummenu,*picklist,*menueditor,
  60.          *registmenu,*formatmenu,*listbox;
  61.  
  62. extern int aeshandle,vdihandle,userhandle,exitcode,pexec,boxw,boxh;
  63. extern int xdesk,ydesk,wdesk,hdesk;
  64. extern int topwin,clipbrd,nodesktop,lineendsign,cut,bcancel,
  65.               eszet,wret,tabexp,windials,vastart,threedee,komma,
  66.               umlautwandlung,toolbar_zeigen,tabbar,scrollreal,
  67.               scaktiv;
  68.  
  69. extern char alertstr[];
  70. extern unsigned long backuptime;
  71. extern LINESTRUCT *begcut,*endcut;
  72. extern int act_dev, act_paper, act_dist;
  73. extern TMACRO macro;
  74.  
  75. int align(int, int);
  76. void *get_cookie(long CookieId);
  77. WINDOW *Wmentry(int mentry);
  78.  
  79. /* hier sind die Iconpositionen abgespeichert */
  80. typedef struct
  81. {
  82.     int x,y;
  83. }ICNCOORDS;
  84.  
  85. extern ICNCOORDS iconcoords[];
  86.  
  87. void checkmenu(OBJECT *tree, WINDOW *wp)
  88. {
  89.     static WINDOW *oldwp=NULL;
  90.     WINDOW *wp2;
  91.     int i,desk_obj;
  92.     int wh;
  93.     long t1,t2;
  94.  
  95.     if(wp)
  96.     {
  97.         if(wp!=oldwp) /* nur dann, wenn Fenster nicht gewechselt wurde */
  98.         {
  99.             if(undo.item!=WINABORT && undo.item!=WINCLOSE)
  100.                 undo.item=FALSE;
  101.             oldwp=wp;
  102.         }
  103.         i=is_selected(desktop,DESKICN8,DESKICND);
  104.         Menu_ienable(tree,WINREAD, !i && !(begcut && endcut));
  105.         Menu_ienable(tree,WINCLOSE,!i);
  106.  
  107.         Menu_ienable(tree,WINSAVE, !i &&
  108.                          (wp->w_state&CHANGED?TRUE:FALSE) &&
  109.                          strcmp((char *)Wname(wp),NAMENLOS));
  110.         Menu_ienable(tree,WINSAVAS,!i);
  111.         Menu_ienable(tree,WINABORT,!i &&
  112.                          (wp->w_state&CHANGED?TRUE:FALSE) &&
  113.                          strcmp((char *)Wname(wp),NAMENLOS));
  114.         Menu_ienable(tree,WINNEXT2,(Wcount(OPENED)>1)?TRUE:FALSE); /* next gewähren */
  115.  
  116.         Menu_ienable(tree,WINOPALL,(Wcount(CREATED)-Wcount(OPENED))?TRUE:FALSE);
  117.         Menu_ienable(tree,WINCLALL,Wcount(OPENED)?TRUE:FALSE);
  118.         Menu_ienable(tree,WINARR1,(Wcount(OPENED)>1)?TRUE:FALSE);
  119.         Menu_ienable(tree,WINARR2,(Wcount(OPENED)>1)?TRUE:FALSE);
  120.         Menu_ienable(tree,WINARR3,(Wcount(OPENED)>1)?TRUE:FALSE);
  121.         Menu_ienable(tree,WINFULL,TRUE);
  122.         Menu_ienable(tree,WINPRINT,!i);
  123.  
  124.         i = !cut && begcut && endcut;
  125.         if(i)
  126.             Menu_ienable(tree,BLKCOL,FALSE);
  127.         else
  128.             Menu_ienable(tree,BLKCOL,TRUE);
  129.         Menu_ienable(tree,EDITCUT,i);
  130.         Menu_ienable(tree,EDITCOPY,i);
  131.         Menu_ienable(tree,EDITPAST,clipbrd
  132.         || (!clipbrd &&  cut &&    begcut && endcut));
  133.  
  134.         Menu_ienable(tree,EDITUNDO,undo.item); /* UNDO gewähren */
  135.         Menu_ienable(tree,EDITSHLF,i);
  136.         Menu_ienable(tree,EDITSHRT,i);
  137.         Menu_ienable(tree,EDITSORT,i);
  138.         Menu_ienable(tree,EDITTOGL,TRUE);
  139.         Menu_ienable(tree,EDITBIG,TRUE);
  140.         Menu_ienable(tree,EDITSMAL,TRUE);
  141.         Menu_ienable(tree,EDITCAPS,TRUE);
  142.         Menu_ienable(tree,EDITFORM,wp->w_state&COLUMN?FALSE:TRUE);
  143.         Menu_ienable(tree,SEARBEG,i);
  144.         Menu_ienable(tree,SEAREND,i);
  145.  
  146.         i = (wp->w_state&COLUMN) && begcut && endcut;
  147.         Menu_ienable(tree,BLKCNT,i);
  148.         Menu_ienable(tree,BLKSUM,i);
  149.         Menu_ienable(tree,BLKMEAN,i);
  150.         Menu_ienable(tree,BLKSDEV,i);
  151.         Menu_ienable(tree,BLKMWST,i);
  152.         Menu_ienable(tree,BLKINTER,i);
  153.         Menu_ienable(tree,BLKALL,i);
  154.  
  155.         Menu_ienable(tree,FORMUMBR,TRUE);
  156.         Menu_ienable(tree,FORMBLK,TRUE);
  157.         Menu_icheck(tree,FORMBLK,wp->w_state&BLOCKSATZ?TRUE:FALSE); /* Häkchen für Blocksatz */
  158.         Menu_icheck(tree,BLKCOL,wp->w_state&COLUMN?TRUE:FALSE);
  159.  
  160.         Menu_ienable(tree,FORMINS,TRUE);
  161.         Menu_icheck(tree,FORMINS,wp->w_state&INSERT?TRUE:FALSE); /* Häkchen für Insert */
  162.  
  163.         Menu_ienable(tree,FORMIND,TRUE);
  164.         Menu_icheck(tree,FORMIND,wp->w_state&INDENT?TRUE:FALSE); /* Häkchen für Indent */
  165.  
  166.         Menu_ienable(tree,OPTLIN,TRUE);
  167.         Menu_ienable(tree,OPTBRACE,TRUE);
  168.  
  169.         if(!topwin)
  170.         {
  171.             Menu_ienable(tree,WINREAD ,TRUE);
  172.             Menu_ienable(tree,WININFO ,TRUE);
  173.             Menu_ienable(tree,WINCLOSE,TRUE);
  174.             Menu_ienable(tree,WINSAVE ,TRUE);
  175.             Menu_ienable(tree,WINSAVAS,TRUE);
  176.             Menu_ienable(tree,WINABORT,TRUE);
  177.             Menu_ienable(tree,WINPRINT,TRUE);
  178.  
  179.             if(nodesktop)
  180.                 Menu_ienable(tree,EDITALL,TRUE);
  181.             Menu_ienable(tree,SEARFIND,TRUE);
  182.             Menu_ienable(tree,SEARNEXT,TRUE);
  183.             Menu_ienable(tree,SEARSEL ,TRUE);
  184.             Menu_ienable(tree,SEARSMRK,TRUE);
  185.             Menu_ienable(tree,SEARGMRK,TRUE);
  186.             Menu_ienable(tree,SEARGOTO,TRUE);
  187.             Menu_ienable(tree,SEARPAGE,TRUE);
  188.  
  189.             Menu_ienable(tree,FORMTAB,TRUE);
  190.             Menu_ienable(tree,OPTFONT,TRUE);
  191.             Menu_ienable(tree,OPTCHARS,TRUE);
  192.             Menu_ienable(tree,OPTVIEW,TRUE);
  193.  
  194.             topwin=TRUE;
  195.         }                                          /* NICHT VOR "if(!topwin)" !!!     */
  196.         if((i=wind_create(0,0,0,0,0))>0) /* gibt es ein weiteres Fenster ? */
  197.         {
  198.             wind_delete(i);
  199.             if(Wcount(CREATED)<MAXWINDOWS-1)              /* wg. WINX */
  200.             {
  201.                 Menu_ienable(tree,WINNEW,TRUE);  /* wenn ja, enablen                */
  202.                 Menu_ienable(tree,WINOPEN,TRUE);
  203.                 Menu_ienable(tree,WINPICK,TRUE);
  204.             }
  205.             else
  206.             {
  207.                 Menu_ienable(tree,WINNEW,FALSE);  /* wenn nein, disablen          */
  208.                 Menu_ienable(tree,WINOPEN,FALSE);
  209.                 Menu_ienable(tree,WINPICK,FALSE);
  210.             }
  211.         }
  212.         else
  213.         {
  214.             Menu_ienable(tree,WINNEW,FALSE);  /* wenn nein, disablen          */
  215.             Menu_ienable(tree,WINOPEN,FALSE);
  216.             Menu_ienable(tree,WINPICK,FALSE);
  217.         }
  218.     }
  219.     else
  220.     {
  221.         if(topwin)
  222.         {
  223.             Menu_ienable(tree,WINREAD ,FALSE);
  224.             Menu_ienable(tree,WININFO ,FALSE);
  225.             Menu_ienable(tree,WINCLOSE,FALSE);
  226.             Menu_ienable(tree,WINSAVE ,FALSE);
  227.             Menu_ienable(tree,WINSAVAS,FALSE);
  228.             Menu_ienable(tree,WINABORT,FALSE);
  229.             Menu_ienable(tree,WINPRINT,FALSE);
  230.  
  231.             Menu_ienable(tree,EDITUNDO,FALSE);
  232.             Menu_ienable(tree,EDITCUT,FALSE);
  233.             Menu_ienable(tree,EDITCOPY,FALSE);
  234.             Menu_ienable(tree,EDITPAST,FALSE);
  235.             Menu_ienable(tree,EDITSHLF,FALSE);
  236.             Menu_ienable(tree,EDITSHRT,FALSE);
  237.             Menu_ienable(tree,EDITSORT,FALSE);
  238.             Menu_ienable(tree,EDITTOGL,FALSE);
  239.             Menu_ienable(tree,EDITBIG,FALSE);
  240.             Menu_ienable(tree,EDITSMAL,FALSE);
  241.             Menu_ienable(tree,EDITCAPS,FALSE);
  242.             Menu_ienable(tree,EDITFORM,FALSE);
  243.  
  244.             Menu_ienable(tree,SEARFIND,FALSE);
  245.             Menu_ienable(tree,SEARNEXT,FALSE);
  246.             Menu_ienable(tree,SEARSEL ,FALSE);
  247.             Menu_ienable(tree,SEARBEG ,FALSE);
  248.             Menu_ienable(tree,SEAREND ,FALSE);
  249.             Menu_ienable(tree,SEARSMRK,FALSE);
  250.             Menu_ienable(tree,SEARGMRK,FALSE);
  251.             Menu_ienable(tree,SEARGOTO,FALSE);
  252.             Menu_ienable(tree,SEARPAGE,FALSE);
  253.  
  254.             Menu_ienable(tree,BLKCNT,FALSE);
  255.             Menu_ienable(tree,BLKSUM,FALSE);
  256.             Menu_ienable(tree,BLKMEAN,FALSE);
  257.             Menu_ienable(tree,BLKSDEV,FALSE);
  258.             Menu_ienable(tree,BLKMWST,FALSE);
  259.             Menu_ienable(tree,BLKINTER,FALSE);
  260.             Menu_ienable(tree,BLKALL,FALSE);
  261.  
  262.             Menu_ienable(tree,WINCLALL,FALSE);
  263.             Menu_ienable(tree,WINARR1,FALSE);
  264.             Menu_ienable(tree,WINARR2,FALSE);
  265.             Menu_ienable(tree,WINARR3,FALSE);
  266.             Menu_ienable(tree,WINFULL,FALSE);
  267.  
  268.             Menu_ienable(tree,OPTFONT,FALSE);
  269.             Menu_ienable(tree,OPTCHARS,FALSE);
  270.             Menu_ienable(tree,OPTVIEW,FALSE);
  271.             Menu_ienable(tree,OPTLIN,FALSE);
  272.             Menu_ienable(tree,OPTBRACE,FALSE);
  273.             topwin=FALSE;
  274.         }
  275.         _wind_get(0,WF_TOP,&wh,&i,&i,&i);
  276.         /* mindestens ein eigenes Fenster, oberstes gehört aber nicht zu 7UP */
  277.         Menu_ienable(tree,WINNEXT2,(Wcount(OPENED) && !Wp(wh))?TRUE:FALSE); /* next gewähren */
  278.  
  279.         Menu_ienable(tree,WININFO, TRUE);
  280.         Menu_ienable(tree,WINCLOSE,TRUE);
  281.         Menu_ienable(tree,WINSAVE, TRUE);
  282.         Menu_ienable(tree,WINSAVAS,TRUE);
  283.         Menu_ienable(tree,WINPRINT,TRUE);
  284.         Menu_ienable(tree,EDITALL,!nodesktop);
  285.  
  286.         Menu_ienable(tree,FORMTAB,FALSE);
  287.         Menu_ienable(tree,FORMUMBR,FALSE);
  288.         Menu_ienable(tree,FORMBLK,FALSE);
  289.         Menu_ienable(tree,BLKCOL,FALSE);
  290.         Menu_ienable(tree,FORMINS,FALSE);
  291.         Menu_ienable(tree,FORMIND,FALSE);
  292.  
  293.         Menu_icheck(tree,FORMTAB,FALSE);
  294.         Menu_icheck(tree,FORMBLK,FALSE);
  295.         Menu_icheck(tree,BLKCOL,FALSE);
  296.         Menu_icheck(tree,FORMINS,FALSE);
  297.         Menu_icheck(tree,FORMIND,FALSE);
  298.         if(is_selected(desktop,DESKICN1,DESKICN7)==1)
  299.         {
  300.             for(desk_obj=DESKICN1; desk_obj<=DESKICN7; desk_obj++)
  301.             {
  302.                 if(desktop[desk_obj].ob_state & SELECTED)
  303.                 {
  304.                     wp=Wicon(desk_obj);                /* nimm Icon  */
  305.  
  306.                     Menu_ienable(tree,WINSAVE,(wp->w_state&CHANGED?TRUE:FALSE) &&
  307.                                      strcmp((char *)Wname(wp),NAMENLOS));
  308.                     Menu_ienable(tree,FORMTAB,TRUE);
  309.                     Menu_ienable(tree,FORMUMBR,TRUE);
  310.                     Menu_ienable(tree,FORMBLK,TRUE);
  311.                     Menu_ienable(tree,BLKCOL,TRUE);
  312.                     Menu_ienable(tree,FORMINS,TRUE);
  313.                     Menu_ienable(tree,FORMIND,TRUE);
  314.                     Menu_icheck(tree,FORMBLK,wp->w_state&BLOCKSATZ?TRUE:FALSE); /* Häkchen für Blocksatz */
  315.                     Menu_icheck(tree,BLKCOL,wp->w_state&COLUMN?TRUE:FALSE);
  316.                     Menu_icheck(tree,FORMINS,wp->w_state&INSERT?TRUE:FALSE); /* Häkchen für Insert */
  317.                     Menu_icheck(tree,FORMIND,wp->w_state&INDENT?TRUE:FALSE); /* Häkchen für Indent */
  318.                 }
  319.             }
  320.         }
  321.         Menu_ienable(tree,WINOPALL,Wcount(CREATED)?TRUE:FALSE);
  322.         Menu_ienable(tree,OPTCHARS,TRUE);
  323.         Menu_ienable(tree,OPTVIEW,TRUE);
  324.         Menu_ienable(tree,OPTLIN,TRUE);
  325.         Menu_ienable(tree,OPTBRACE,TRUE);
  326.         if(!is_selected(desktop,DESKICN1,DESKICN7))
  327.         {
  328.             Menu_ienable(tree,WINCLOSE,FALSE);
  329.             Menu_ienable(tree,WINSAVE, FALSE);
  330.             Menu_ienable(tree,WINSAVAS,FALSE);
  331.             Menu_ienable(tree,WINPRINT,FALSE);
  332.             Menu_ienable(tree,OPTCHARS,FALSE);
  333.             Menu_ienable(tree,OPTVIEW,FALSE);
  334.             Menu_ienable(tree,OPTLIN,FALSE);
  335.             Menu_ienable(tree,OPTBRACE,FALSE);
  336.         }
  337.         else
  338.             goto WEITER;
  339.         if(!is_selected(desktop,DESKICN8,DESKICND))
  340.         {
  341.             Menu_ienable(tree,WININFO,FALSE);  /* info erstmal löschen */
  342.         }
  343.     }
  344. WEITER:
  345.     if(nodesktop)
  346.         for(i=WINDAT1; i<=WINDAT7; i++)
  347.           if(!(tree[i].ob_state&DISABLED) && (wp2=Wmentry(i))!=NULL)
  348.                 Menu_icheck(tree,i,wp2->w_state&OPENED?TRUE:FALSE);
  349.  
  350.     Menu_ienable(tree, MACSAVE, macro.mp?TRUE:FALSE); /* Macro laden */
  351.  
  352.     if(Wcount(OPENED)>=2)
  353.         Menu_ienable(tree,OPTCOMP,TRUE);  /* Textvergleich */
  354.     else
  355.         Menu_ienable(tree,OPTCOMP,FALSE);
  356.     return;
  357. }
  358. #if GEMDOS
  359. #define RSC_CREATE
  360. #endif
  361. #ifdef RSC_CREATE
  362. #include "7up.rsh"
  363. #include "7up.rh"
  364.  
  365. static void fix_tree(int n_tree)
  366. {
  367.   register int tree,      /* index for trees */
  368.                     object;    /* index for objects */
  369.   OBJECT         *pobject, *p;
  370.  
  371.   for (tree = 0; tree < n_tree; tree++) /* fix trees */
  372.   {
  373.      object  = 0;
  374.      pobject = rs_trindex [tree];
  375.      do
  376.      {
  377.         rsrc_obfix(pobject,object);
  378.      }
  379.      while (! (pobject [object++].ob_flags & LASTOB));
  380.   } /* for */
  381. } /* fix_tree */
  382. #endif
  383.  
  384. int rsrc_init(char *rscname, char *inffile)
  385. {
  386.     int hiword,loword,i,x,y,w,h,type,obj,area[4];
  387.     OBJECT *ob;
  388.     char *s;
  389.  
  390. #ifdef RSC_CREATE
  391.     if(pexec)/* wurde schon mal gestartet */
  392.     {
  393.         menu_bar(winmenu,TRUE);
  394. #if GEMDOS
  395. /*
  396.     if((_GemParBlk.global[0]>=0x0400) &&
  397.        (_wind_get(0,WF_NEWDESK,&hiword,&loword,&i,&i)!=0))
  398.     {
  399.         ob = (OBJECT *)(((long)hiword<<16)|(long)loword);
  400.         if(ob)
  401.         {
  402.             desktop->ob_spec.obspec.interiorcol=ob->ob_spec.obspec.interiorcol;
  403.             desktop->ob_spec.obspec.fillpattern=ob->ob_spec.obspec.fillpattern;
  404.         }
  405.     }
  406.     else
  407. */
  408.         desktop->ob_spec.obspec.interiorcol=GREEN;
  409. #else
  410.         desktop->ob_spec.obspec.interiorcol=BLUE;
  411. #endif
  412.         inst_trashcan_icon(desktop,DESKICN8,DESKICND,FALSE);
  413.         inst_clipboard_icon(desktop,DESKICNB,DESKICNC,FALSE);
  414.         if(!nodesktop || pexec)        /* nur dann Müll abräumen */
  415.         {
  416.             wind_set(0,WF_NEWDESK,nodesktop?NULL:desktop,0,0);
  417.             _wind_get(0, WF_FIRSTXYWH, &area[0], &area[1], &area[2], &area[3]);
  418.             while( area[2] && area[3] )
  419.             {
  420.                 if(nodesktop)
  421.                     form_dial(FMD_FINISH,0,0,0,0,area[0],area[1],area[2],area[3]);
  422.                 else
  423.                     objc_draw(desktop,ROOT,MAX_DEPTH,area[0],area[1],area[2],area[3]);
  424.                 _wind_get(0, WF_NEXTXYWH, &area[0], &area[1], &area[2], &area[3]);
  425.             }
  426.         }
  427.         return(TRUE);
  428.     }
  429.     fix_tree(NUM_TREE);
  430.     winmenu  =(OBJECT *)rs_trindex[WINMENU ];
  431.     prtmenu  =(OBJECT *)rs_trindex[PRTMENU ];
  432.     desktop  =(OBJECT *)rs_trindex[DESKTOP ];
  433.     findmenu =(OBJECT *)rs_trindex[FINDMENU];
  434.     gotomenu =(OBJECT *)rs_trindex[GOTOMENU];
  435.     tabmenu  =(OBJECT *)rs_trindex[TABMENU ];
  436.     infomenu =(OBJECT *)rs_trindex[INFOMENU];
  437.     copyinfo =(OBJECT *)rs_trindex[COPYINFO];
  438.     fontmenu =(OBJECT *)rs_trindex[FONTSEL ];
  439.     shellmenu=(OBJECT *)rs_trindex[SHELMENU];
  440.     chartable=(OBJECT *)rs_trindex[CHARTBL ];
  441. /*
  442.     progress =(OBJECT *)rs_trindex[IOPROG  ];
  443. */
  444.     shareware=(OBJECT *)rs_trindex[SHARWARE];
  445.     shell2    =(OBJECT *)rs_trindex[SHELL2  ];
  446.     userimg  =(OBJECT *)rs_trindex[USERIMG ];
  447.     fkeymenu =(OBJECT *)rs_trindex[FKEYMENU];
  448.     umbrmenu =(OBJECT *)rs_trindex[UMBRMENU];
  449.     layout    =(OBJECT *)rs_trindex[PRNINST ];
  450.     pinstall =(OBJECT *)rs_trindex[PRNINST2];
  451.     preview  =(OBJECT *)rs_trindex[PREVIEW ];
  452.     replmenu =(OBJECT *)rs_trindex[REPLMENU];
  453.     markmenu =(OBJECT *)rs_trindex[MARKMENU];
  454.     grepmenu =(OBJECT *)rs_trindex[GREPMENU];
  455.     popmenu  =(OBJECT *)rs_trindex[POPMENU ];
  456.     divmenu  =(OBJECT *)rs_trindex[DIVERSES];
  457.     bracemenu=(OBJECT *)rs_trindex[BRACES  ];
  458.     sortmenu =(OBJECT *)rs_trindex[SORTMENU];
  459.     gdospop  =(OBJECT *)rs_trindex[POPPRN  ];
  460.     fselbox  =(OBJECT *)rs_trindex[FSELBOX ];
  461.     paperpop =(OBJECT *)rs_trindex[POPPAPER];
  462.     distpop  =(OBJECT *)rs_trindex[POPDIST ];
  463.     nummenu  =(OBJECT *)rs_trindex[NUMMENU ];
  464.     picklist =(OBJECT *)rs_trindex[PICKLIST];
  465.     menueditor=(OBJECT *)rs_trindex[MENUEDITOR];
  466.     registmenu=(OBJECT *)rs_trindex[REGISTER];
  467.     formatmenu=(OBJECT *)rs_trindex[TEXTFORMAT];
  468.     listbox =  (OBJECT *)rs_trindex[SLISTBOX];
  469. #else
  470. #if MSDOS
  471.     void far *l;
  472.     long size;
  473.     size=farcoreleft()-63*1024L;
  474.     if(size>0 && (l=farmalloc(size))!=NULL)
  475.     {
  476. #endif
  477.         if(!rsrc_load(rscname))
  478.             return(FALSE);
  479. #if MSDOS
  480.         farfree(l);
  481.     }
  482.     else
  483.         return(FALSE);
  484. #endif
  485.     rsrc_gaddr(R_TREE,WINMENU ,&winmenu  );
  486.     rsrc_gaddr(R_TREE,PRTMENU ,&prtmenu  );
  487.     rsrc_gaddr(R_TREE,DESKTOP ,&desktop  );
  488.     rsrc_gaddr(R_TREE,FINDMENU,&findmenu );
  489.     rsrc_gaddr(R_TREE,GOTOMENU,&gotomenu );
  490.     rsrc_gaddr(R_TREE,TABMENU ,&tabmenu  );
  491.     rsrc_gaddr(R_TREE,INFOMENU,&infomenu );
  492.     rsrc_gaddr(R_TREE,COPYINFO,©info );
  493.     rsrc_gaddr(R_TREE,FONTSEL ,&fontmenu );
  494.     rsrc_gaddr(R_TREE,SHELMENU,&shellmenu);
  495.     rsrc_gaddr(R_TREE,CHARTBL ,&chartable);
  496. /*
  497.     rsrc_gaddr(R_TREE,IOPROG  ,&progress );
  498. */
  499.     rsrc_gaddr(R_TREE,SHARWARE,&shareware);
  500.     rsrc_gaddr(R_TREE,SHELL2  ,&shell2    );
  501.     rsrc_gaddr(R_TREE,USERIMG ,&userimg  );
  502.     rsrc_gaddr(R_TREE,FKEYMENU,&fkeymenu );
  503.     rsrc_gaddr(R_TREE,UMBRMENU,&umbrmenu );
  504.     rsrc_gaddr(R_TREE,PRNINST ,&layout    );
  505.     rsrc_gaddr(R_TREE,PRNINST2,&pinstall );
  506.     rsrc_gaddr(R_TREE,PREVIEW ,&preview  );
  507.     rsrc_gaddr(R_TREE,REPLMENU,&replmenu );
  508.     rsrc_gaddr(R_TREE,MARKMENU,&markmenu );
  509.     rsrc_gaddr(R_TREE,GREPMENU,&grepmenu );
  510.     rsrc_gaddr(R_TREE,POPMENU ,&popmenu  );
  511.     rsrc_gaddr(R_TREE,DIVERSES,&divmenu  );
  512.     rsrc_gaddr(R_TREE,BRACES  ,&bracemenu);
  513.     rsrc_gaddr(R_TREE,SORTMENU,&sortmenu );
  514.     rsrc_gaddr(R_TREE,POPPRN  ,&gdospop  );
  515.     rsrc_gaddr(R_TREE,FSELBOX ,&fselbox  );
  516.     rsrc_gaddr(R_TREE,POPPAPER,&paperpop );
  517.     rsrc_gaddr(R_TREE,POPDIST, &distpop  );
  518.     rsrc_gaddr(R_TREE,NUMMENU, &nummenu  );
  519.     rsrc_gaddr(R_TREE,PICKLIST,&picklist );
  520.     rsrc_gaddr(R_TREE,MENUEDITOR,&menueditor);
  521.     rsrc_gaddr(R_TREE,REGISTER,®istmenu);
  522.     rsrc_gaddr(R_TREE,TEXTFORMAT,&formatmenu);
  523.     rsrc_gaddr(R_TREE,SLISTBOX,&listbox);
  524. #endif
  525.  
  526. #ifdef RSC_CREATE
  527. #undef RSC_CREATE
  528. #endif
  529.  
  530.     form_center(prtmenu ,&x,&y,&w,&h);
  531.     form_center(findmenu,&x,&y,&w,&h);
  532.     form_center(gotomenu,&x,&y,&w,&h);
  533.     form_center(tabmenu ,&x,&y,&w,&h);
  534.     form_center(infomenu,&x,&y,&w,&h);
  535.     form_center(copyinfo,&x,&y,&w,&h);
  536.     form_center(fontmenu,&x,&y,&w,&h);
  537.     form_center(shellmenu,&x,&y,&w,&h);
  538.     form_center(chartable,&x,&y,&w,&h);
  539. /*
  540.     form_center(progress,&x,&y,&w,&h);
  541. */
  542.     form_center(shareware,&x,&y,&w,&h);
  543.     form_center(shell2,&x,&y,&w,&h);
  544.     form_center(fkeymenu,&x,&y,&w,&h);
  545.     form_center(umbrmenu,&x,&y,&w,&h);
  546.     form_center(layout,&x,&y,&w,&h);
  547.     form_center(pinstall,&x,&y,&w,&h);
  548.     form_center(preview,&x,&y,&w,&h);
  549.     form_center(replmenu,&x,&y,&w,&h);
  550.     form_center(markmenu,&x,&y,&w,&h);
  551.     form_center(grepmenu,&x,&y,&w,&h);
  552.     form_center(divmenu,&x,&y,&w,&h);
  553.     form_center(bracemenu,&x,&y,&w,&h);
  554.     form_center(sortmenu,&x,&y,&w,&h);
  555.     form_center(nummenu,&x,&y,&w,&h);
  556.     form_center(picklist,&x,&y,&w,&h);
  557.     form_center(menueditor,&x,&y,&w,&h);
  558.     form_center(registmenu,&x,&y,&w,&h);
  559.     form_center(formatmenu,&x,&y,&w,&h);
  560.  
  561.     form_write(findmenu,FINDSTR,"",FALSE);
  562.     form_write(findmenu,FINDREPL,"",FALSE);
  563.     form_write(gotomenu,GOTOLINE,"",FALSE);
  564.     form_write(tabmenu,TABULAT,"3",FALSE);
  565.     form_write(shellmenu,SHELCOMM,"",FALSE);
  566.     form_write(layout,PRNKZSTR,"",FALSE);
  567.     form_write(layout,PRNFZSTR,"",FALSE);
  568.     form_write(divmenu,DIVBACK2,"",FALSE);
  569.     form_write(grepmenu,GREPPATT,"",FALSE);
  570.  
  571.     form_write(markmenu,MARK1MEM,"",FALSE);
  572.     form_write(markmenu,MARK2MEM,"",FALSE);
  573.     form_write(markmenu,MARK3MEM,"",FALSE);
  574.     form_write(markmenu,MARK4MEM,"",FALSE);
  575.     form_write(markmenu,MARK5MEM,"",FALSE);
  576.  
  577.    form_write(bracemenu,FREE1BEG,"",FALSE);
  578.    form_write(bracemenu,FREE1END,"",FALSE);
  579.    form_write(bracemenu,FREE2BEG,"",FALSE);
  580.    form_write(bracemenu,FREE2END,"",FALSE);
  581.    form_write(bracemenu,FREE3BEG,"",FALSE);
  582.    form_write(bracemenu,FREE3END,"",FALSE);
  583.    form_write(bracemenu,FREE4BEG,"",FALSE);
  584.    form_write(bracemenu,FREE4END,"",FALSE);
  585.    form_write(bracemenu,FREE5BEG,"",FALSE);
  586.    form_write(bracemenu,FREE5END,"",FALSE);
  587.  
  588.     form_write(menueditor,MENUMFILE,"",FALSE);
  589.     form_write(menueditor,MENUTFILE,"",FALSE);
  590.  
  591.     form_write(registmenu,REGISTNAME,"",FALSE);
  592.     form_write(registmenu,REGISTKEY,"",FALSE);
  593.  
  594. #if MSDOS
  595.     desktop->ob_spec.obspec.framesize=0; /* Rand weg */
  596. #endif
  597.     desktop->ob_x=xdesk;
  598.     desktop->ob_y=ydesk;
  599.     desktop->ob_width=wdesk;
  600.     desktop->ob_height=hdesk;
  601.  
  602.     for(i=FKEY1; i<=FKEY10; i++)
  603.         form_write(fkeymenu,i,"",FALSE);
  604.     for(i=SFKEY1; i<=SFKEY10; i++)
  605.     {
  606.         form_write(fkeymenu,i,"",FALSE);
  607. /* 2.10.94
  608.         fkeymenu[i].ob_flags &= ~EDITABLE;
  609. */
  610.     }
  611. /* erst fixen, dann hiden    
  612.     fkeymenu[FKSHIFT].ob_flags|=HIDETREE;
  613. */
  614.  
  615. #if MSDOS
  616.     menu_text(winmenu,EDITUNDO,"  Widerrufen         ESC");
  617.     menu_text(winmenu,WINSHELL,"  Programmstart...^Z");
  618.     menu_text(winmenu,FORMINS, "  Einfügemodus  Einfg");
  619.     winmenu[WINBLK     ].ob_flags=HIDETREE;
  620.     winmenu[BLKCNT  -1].ob_flags=HIDETREE;
  621.     for(i=WINFORM; i<=WINOPT; i++)
  622.         winmenu[i].ob_x-=(9*boxw);
  623.     winmenu[FORMTAB -1].ob_x-=(9*boxw);
  624.     winmenu[WINOPALL-1].ob_x-=(9*boxw);
  625.     winmenu[OPTHELP -1].ob_x-=(3*boxw);
  626. #endif
  627.  
  628.     w=wdesk/8;
  629.     h=hdesk/6;
  630.  
  631.     for(i=DESKICN1;i<=DESKICN7;i++)
  632.     {
  633.         desktop[i].ob_x = (i-DESKICN1)*w;
  634.         desktop[i].ob_y = hdesk-desktop[i].ob_height;
  635.     }
  636.     for(i=DESKICN8;i<=DESKICNB;i++)
  637.     {
  638.         desktop[i].ob_x = wdesk-desktop[i].ob_width;
  639.         desktop[i].ob_y = hdesk-desktop[i].ob_height-(i-DESKICN8)*h;
  640.     }
  641.     for(i=DESKICN1;i<=DESKICNB;i++)                  /* koordinaten sichern */
  642.     {
  643.         iconcoords[i-DESKICN1].x = abs2rel(desktop[i].ob_x, xdesk+wdesk);
  644.         iconcoords[i-DESKICN1].y = abs2rel(desktop[i].ob_y, ydesk+hdesk);
  645.     }
  646.     gdospop [POPNO  ].ob_state&=~CHECKED;
  647.     paperpop[POPLETT].ob_state&=~CHECKED;
  648.     distpop [POPD1  ].ob_state&=~CHECKED;
  649.  
  650. /*********************************************************************/
  651.     restoreconfig(inffile); /* jetzt evtl. Defaultwerte überschreiben */
  652. /*********************************************************************/
  653.  
  654.     gdospop [act_dev  ].ob_state|=CHECKED;
  655.     strcpy((char *)layout[PRNDRUCK].ob_spec.index,
  656.              (char *)gdospop[act_dev].ob_spec.index);
  657.  
  658.     paperpop[act_paper].ob_state|=CHECKED;
  659.     strcpy((char *)layout[PRNPAPER].ob_spec.index,
  660.              (char *)paperpop[act_paper].ob_spec.index);
  661. #if MSDOS
  662.     strcpy((char *)distpop[POPD1+1].ob_spec.index," 1.5 ");
  663. #endif
  664.     distpop[act_dist  ].ob_state|=CHECKED;
  665.     strcpy((char *)layout[PRNDIST].ob_spec.index,
  666.              (char *)distpop[act_dist].ob_spec.index);
  667. /*
  668.     Menu_icheck(winmenu,EDITCLIP,clipbrd);
  669. */
  670.     if(divmenu[DIVDESK].ob_state & SELECTED)
  671.         nodesktop=FALSE;
  672.     else
  673.         nodesktop=TRUE;
  674.  
  675.     if(divmenu[DIVCLIP].ob_state & SELECTED)
  676.         clipbrd=TRUE;
  677.     else
  678.         clipbrd=FALSE;
  679.  
  680.       winmenu[WINOPALL-1].ob_height=((WINFULL-WINOPALL+1)*boxh);
  681.     for(i=WINDAT1-1; i<=WINDAT7; i++)
  682.          winmenu[i].ob_flags|=HIDETREE;
  683.     
  684.     if(divmenu[DIVPAPER].ob_state & DISABLED)
  685.         divmenu[DIVPAPER].ob_state = NORMAL;
  686.     if(!getenv("TRASHDIR")) /* Disablen falls nicht vorhanden */
  687.         divmenu[DIVPAPER].ob_state = DISABLED;
  688.  
  689. #if GEMDOS
  690.     if(divmenu[DIVMAUS].ob_state & DISABLED)
  691.         divmenu[DIVMAUS].ob_state = NORMAL;
  692.     if(divmenu[DIVFREE].ob_state & DISABLED)
  693.         divmenu[DIVFREE].ob_state = NORMAL;
  694.  
  695.     if((void *)get_cookie('VSCR')!=NULL) /* Virtual Screen von BigScreen 2 */
  696.     {
  697.         divmenu[DIVMAUS].ob_state = DISABLED;
  698.         divmenu[DIVFREE].ob_state = DISABLED;
  699.         divmenu[DIVZENT].ob_state = SELECTED;
  700.     }
  701.  
  702.     if((_GemParBlk.global[0]>=0x0340) && 
  703.        (objc_sysvar(0,4,0,0,&i,&i)>0) &&
  704.        (TRUE/*mindestens_16_Farben()*/))          /* 3D-Effekt möglich? */
  705.     {
  706.         threedee=TRUE;
  707.     }
  708.     else
  709.     {
  710.         threedee=FALSE;
  711.     }
  712.  
  713.     if(!threedee) /* Help- un OK-Knopf vergrößern */
  714.     {
  715.        divmenu[DIVHDA].ob_x      -= 0;
  716.        divmenu[DIVHDA].ob_y      -= 1;
  717.        divmenu[DIVHDA].ob_width  += 0;
  718.        divmenu[DIVHDA].ob_height += 2;
  719.    }
  720.  
  721.     if(_GemParBlk.global[1]!=1) /* Mehr als eine Applikation gleichzeitig */
  722.     {
  723.         winmenu[WINSHELL].ob_state|=DISABLED; /* kein Shellaufruf */
  724.  
  725.         if(divmenu[DIVDWIN].ob_state & DISABLED)
  726.             divmenu[DIVDWIN].ob_state = NORMAL;
  727.         if(divmenu[DIVDWIN].ob_state & SELECTED)
  728.             windials=TRUE;
  729.         else
  730.             windials=FALSE;
  731.  
  732.         if(divmenu[DIVVAST].ob_state & DISABLED)
  733.             divmenu[DIVVAST].ob_state = NORMAL;
  734.         if(divmenu[DIVVAST].ob_state & SELECTED)
  735.             vastart=TRUE;
  736.         else
  737.             vastart=FALSE;
  738.     }
  739.     else
  740.     {
  741.         divmenu[DIVDWIN ].ob_state = DISABLED;
  742.         windials=FALSE;
  743.         divmenu[DIVVAST ].ob_state = DISABLED;
  744.         vastart=FALSE;
  745.     }
  746. #else
  747.     divmenu[DIVDWIN ].ob_state = DISABLED;
  748.     windials=FALSE;
  749.     divmenu[DIVVAST ].ob_state = DISABLED;
  750.     vastart=FALSE;
  751.     threedee=FALSE;
  752. #endif
  753.  
  754.     if(divmenu[DIVTABEX].ob_state & SELECTED)
  755.         tabexp=TRUE;
  756.     else
  757.         tabexp=FALSE;
  758.  
  759.     if(divmenu[DIVKONV ].ob_state & SELECTED)
  760.         eszet=TRUE;
  761.     else
  762.         eszet=FALSE;
  763.  
  764.     if(divmenu[DIVBLANK].ob_state & SELECTED)
  765.         bcancel=TRUE;
  766.     else
  767.         bcancel=FALSE;
  768.  
  769.     if(divmenu[DIVSTOOL].ob_state & SELECTED)
  770.         toolbar_zeigen=TRUE;
  771.     else
  772.         toolbar_zeigen=FALSE;
  773.  
  774.     if(divmenu[DIVCRLF ].ob_state & SELECTED)
  775.         lineendsign=CRLF;
  776.     if(divmenu[DIVLF    ].ob_state & SELECTED)
  777.         lineendsign=LF;
  778.     if(divmenu[DIVCR    ].ob_state & SELECTED)
  779.         lineendsign=CR;
  780.  
  781.     if(divmenu[DIVWRET ].ob_state & SELECTED)
  782.         wret=TRUE;
  783.     else
  784.         wret=FALSE;
  785. /*
  786.     if(divmenu[DIVMACTIV].ob_state & SELECTED)
  787.         window_under_mouse=TRUE;
  788.     else
  789.         window_under_mouse=FALSE;
  790. */
  791.     if(divmenu[DIVUMLAUT].ob_state & SELECTED)
  792.         umlautwandlung=TRUE;
  793.     else
  794.         umlautwandlung=FALSE;
  795.  
  796.     if(!(divmenu[DIVBUTIM].ob_state & SELECTED))
  797.         backuptime=0xFFFFFFFF;
  798.     sprintf(divmenu[DIVBACK2].ob_spec.tedinfo->te_ptext,"%02d",
  799.               (int)min(99,(int)(backuptime/60000L)));
  800.  
  801.     if(nummenu[NUMNDT].ob_state & SELECTED)
  802.         komma=TRUE;
  803.     else
  804.         komma=FALSE;
  805. /*    
  806.     /* zu Test zwecken */        
  807.     divmenu[DIVTABBAR].ob_state |= SELECTED;
  808. */
  809.     if(divmenu[DIVTABBAR].ob_state & SELECTED)
  810.         tabbar=TRUE;
  811.     else
  812.         tabbar=FALSE;
  813.  
  814.     if(divmenu[DIVSCROLL].ob_state & SELECTED)
  815.         scrollreal=TRUE;
  816.     else
  817.         scrollreal=FALSE;
  818.  
  819.     if(menueditor[MENUTAKTIV].ob_state & SELECTED)
  820.         scaktiv=TRUE;
  821.     else
  822.         scaktiv=FALSE;
  823.  
  824.     for(i=DESKICN1;i<=DESKICNB;i++) /* Koordinaten setzen, entweder die  */
  825.     {                                         /* errechneten, oder die geladenen    */
  826.         desktop[i].ob_x = rel2abs(iconcoords[i-DESKICN1].x, xdesk+wdesk);
  827.         desktop[i].ob_y = rel2abs(iconcoords[i-DESKICN1].y, ydesk+hdesk);
  828.     }
  829.  
  830.     for(i=DESKICN1;i<=DESKICNB;i++) /* Koordinaten korrigieren */
  831.     {
  832.         if(desktop[i].ob_x + desktop[i].ob_width > wdesk)
  833.             desktop[i].ob_x = wdesk-desktop[i].ob_width;
  834.         if(desktop[i].ob_y + desktop[i].ob_height > hdesk)
  835.             desktop[i].ob_y = hdesk-desktop[i].ob_height;
  836.     }
  837.  
  838.     for(i=DESKICN1;i<=DESKICN7;i++)
  839.     {
  840.         desktop[i].ob_state = NORMAL;
  841.         desktop[i].ob_flags = HIDETREE;
  842.     }
  843.  
  844.     for(i=DESKICN1;i<=DESKICNB;i++) /* auf 8 Pixel justieren */
  845.     {
  846.         desktop[i].ob_x=align(desktop[i].ob_x,8);
  847.         desktop[i].ob_y=align(desktop[i].ob_y,8);
  848.     }
  849.  
  850.     form_fix(desktop,0);
  851.  
  852.     /* aktuelles Trashcanicon auswählen */
  853.     desktop[DESKICND].ob_flags|=HIDETREE;
  854.     desktop[DESKICND].ob_x=desktop[DESKICN8].ob_x;
  855.     desktop[DESKICND].ob_y=desktop[DESKICN8].ob_y;
  856.     if(divmenu[DIVPAPER].ob_state & SELECTED)
  857.         inst_trashcan_icon(desktop,DESKICN8,DESKICND,FALSE);
  858.  
  859.     /* aktuelles Klemmbretticon auswählen */
  860.     desktop[DESKICNC].ob_flags|=HIDETREE;
  861.     desktop[DESKICNC].ob_x=desktop[DESKICNB].ob_x;
  862.     desktop[DESKICNC].ob_y=desktop[DESKICNB].ob_y;
  863.     inst_clipboard_icon(desktop,DESKICNB,DESKICNC,FALSE);
  864. /*
  865.     if(exitcode>0) /* evtl. geänderten Exitcode anzeigen */
  866.     {
  867.         *((char *)winmenu[WINQUIT].ob_spec.index+10L)='m';
  868.         *((char *)winmenu[WINQUIT].ob_spec.index+11L)='i';
  869.         *((char *)winmenu[WINQUIT].ob_spec.index+12L)='t';
  870.         *((char *)winmenu[WINQUIT].ob_spec.index+13L)=' ';
  871.         *((char *)winmenu[WINQUIT].ob_spec.index+14L)=(char)(exitcode+'0');
  872.     }
  873. */
  874. #if MSDOS /* GEMDOS: direkt im RSC-File */
  875. /* extended ob_flags für menu_ikey() "Shifttaste" */
  876.     winmenu[WINSAVE ].ob_flags |=FLAGS15;
  877.     winmenu[WINSAVAS].ob_flags |=FLAGS15;
  878.     winmenu[WINPRINT].ob_flags |=FLAGS15;
  879.     winmenu[WINQUIT ].ob_flags |=FLAGS15;
  880.     winmenu[EDITCUT ].ob_flags |=FLAGS15;
  881.     winmenu[EDITCOPY].ob_flags |=FLAGS15;
  882.     winmenu[EDITFORM].ob_flags |=FLAGS15;
  883.     winmenu[SEARNEXT].ob_flags |=FLAGS15;
  884.     winmenu[WINFULL ].ob_flags |=FLAGS15;
  885. #endif
  886.  
  887.     form_fix(userimg,0);
  888.     form_fix(shell2,TRUE);
  889.     form_fix(winmenu,0);
  890.     form_fix(copyinfo,TRUE);
  891.     form_fix(findmenu,TRUE);
  892.     form_fix(tabmenu,TRUE);
  893.     form_fix(shellmenu,TRUE);
  894. /*
  895.     form_fix(progress,TRUE);
  896. */
  897.     form_fix(infomenu,TRUE);
  898.     form_fix(shareware,TRUE);
  899.     form_fix(gotomenu,TRUE);
  900.     form_fix(prtmenu,TRUE);
  901.     form_fix(fontmenu,TRUE);
  902.     form_fix(fkeymenu,TRUE);
  903.  
  904.     for(i=SFKEY1; i<=SFKEY10; i++)
  905.         fkeymenu[i].ob_flags &= ~EDITABLE;
  906. /* MT 2.10.94 erst fixen, dann hiden*/
  907.     fkeymenu[FKSHIFT].ob_flags|=HIDETREE;
  908.  
  909.     form_fix(umbrmenu,TRUE);
  910.     form_fix(layout,TRUE);
  911.     form_fix(pinstall,TRUE);
  912.     form_fix(preview,TRUE);
  913.     form_fix(replmenu,TRUE);
  914.     form_fix(markmenu,TRUE);
  915.     form_fix(grepmenu,TRUE);
  916.     form_fix(divmenu,TRUE);
  917.     form_fix(bracemenu,TRUE);
  918.     form_fix(sortmenu,TRUE);
  919.     form_fix(nummenu,TRUE);
  920.     form_fix(picklist,TRUE);
  921.     form_fix(menueditor,TRUE);
  922.     form_fix(registmenu,TRUE);
  923.     form_fix(formatmenu,TRUE);
  924.  
  925. /* da ist nichts zu fixen
  926.     form_fix(listbox,TRUE);
  927. */
  928.  
  929.     for(i=FCHAR; i<=(FCHAR+255); i++)
  930.     {
  931.         chartable[i].ob_type |= (DFONT<<8); /* extended obtype setzen */
  932.         chartable[i].ob_flags|= FLAGS15;      /* wg. form_button() */
  933.     }
  934.     form_fix(chartable,TRUE);
  935.  
  936.     topwin=TRUE;
  937.     checkmenu(winmenu,NULL);
  938.     topwin=FALSE;
  939.     menu_bar(winmenu,TRUE);
  940.  
  941. #if GEMDOS /* geht nicht unter MTOS auf ST */
  942. /*
  943.     if((_GemParBlk.global[0]>=0x0400) &&
  944.        (_wind_get(0,WF_NEWDESK,&hiword,&loword,&i,&i)!=0))
  945.     {
  946.         ob = (OBJECT *)(((long)hiword<<16)|(long)loword);
  947.         if(ob)
  948.         {
  949.             desktop->ob_spec.obspec.interiorcol=ob->ob_spec.obspec.interiorcol;
  950.             desktop->ob_spec.obspec.fillpattern=ob->ob_spec.obspec.fillpattern;
  951.         }
  952.     }
  953.     else
  954. */
  955.         desktop->ob_spec.obspec.interiorcol=GREEN;
  956. #else
  957.     desktop->ob_spec.obspec.interiorcol=BLUE;
  958. #endif
  959.     if(!nodesktop || pexec)        /* nur dann Müll abräumen */
  960.     {
  961.         wind_set(0,WF_NEWDESK,nodesktop?NULL:desktop,0,0);
  962.         _wind_get(0, WF_FIRSTXYWH, &area[0], &area[1], &area[2], &area[3]);
  963.         while( area[2] && area[3] )
  964.         {
  965.             if(nodesktop)
  966.                 form_dial(FMD_FINISH,0,0,0,0,area[0],area[1],area[2],area[3]);
  967.             else
  968.                 objc_draw(desktop,ROOT,MAX_DEPTH,area[0],area[1],area[2],area[3]);
  969.             _wind_get(0, WF_NEXTXYWH, &area[0], &area[1], &area[2], &area[3]);
  970.         }
  971.     }
  972.     return(TRUE);
  973. }
  974.